Perspectieven#

Hide code cell source
import pandas as pd
import plotly.express as px
import plotly.graph_objs as go
import numpy as np
import plotly.io as pio

df = pd.read_csv('merged.csv')

for column in df[['renewable','GDP_per_capita', 'CO2_per_capita', 'basic_water', 'infant_mort','adult_mortality', 'life_expect']]:
    if not df[str(column)].apply(lambda x: isinstance(x, str)).any():
        if -1 in df[column].values:  # Check if -1 is present in the column
            df = df[df[column] != -1]  # Filter rows where column value is not -1

Perspectief 1#

Ons eerste perspectief is dat mensen in landen met een hogere CO2 uitstoot, zijn gezonder. Gezondheid kan je op verschillende manieren bekijken en er zijn verschillende methoden voor hoe je dit kan bepalen. Wij hebben daarom ook verschillende grafieken en metrieken gepakt om ons standpunt te kunnen onderbouwen. Als eerste gaan we kijken naar toegang tot schoon drinkwater.

In ‘CO2 uitstoot en toegang tot schoon drinkwater’ zien we dat over het algemeen landen die minder CO2 uitstoten, ook minder toegang hebben tot schoon drinkwater. Schoon drinkwater is essentieel om te kunnen overleven en vinden wij heel belangrijk voor gezondheid, en uit deze grafiek zijn dus landen die meer CO2 uitstoten, gezonder, omdat ze meer toegang tot schoon drinkwater hebben.

Deze correlatie is ook wat we in Figuur 2 zien: ‘Pearson’s r correlaties met CO2 per inwoner’. In deze staafgrafiek zien we dat landen die meer CO2 uitstoten inderdaad meer toegang hebben tot schoon drinkwater en deze landen zijn ook in het algemeen meer gevaccineerd tegen ernstige ziektes. Deze vaccins zijn een van de meest belangrijke vaccinaties en beschermen een enorm deel van de bevolking in een land (Pezzotti, 2018). Deze verschillen zouden verklaard kunnen worden doordat landen die veel CO2 uitstoten over het algemeen ook veel rijker zijn, zoals we uit de GDP per inwoner correlatie kunnen zien. Rijke landen kunnen makkelijker inwoners van water voorzien, kunnen makkelijker voor vaccins betalen en hebben over het algemeen betere gezondheidszorg.

Dit zorgt ervoor dat uiteindelijk landen die meer CO2-uitstoot hebben, een hogere levensverwachting hebben en minder sterfte hebben. Dit is iets dat je uit figuur 3: ‘Gezondheid vergeleken met CO2-uitstoot’ kan zien. Levensverwachting en sterfte is misschien wel de belangrijkste metriek voor gezondheid en uit deze figuur zie je dat inderdaad over het algemeen landen met een hogere CO2-uitstoot, langer leven en dus gezonder zijn.

Hide code cell source
# Create the cartogram using Plotly Graph Objects
fig = go.Figure()

skew = 1.7
colors = px.colors.sequential.tempo
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]

# Add the choropleth trace for colored countries
fig.add_trace(go.Choropleth(
    locations=df['country_code'],
    z=df['CO2_per_capita'],
    geo='geo',
    colorscale=colorscale,
    hovertext=[f'{country}<br>CO2 per inwoner: {CO2_per_capita:.2f}<br>Toegang schoon drinkwater: {basic_water:.2f}' for country, CO2_per_capita, basic_water in zip(df['country'], df['CO2_per_capita'], df['basic_water'])],
    colorbar=dict(
        title='CO2 per inwoner (ton)',  # Add a title to the color scale
        titleside='top',
        tickfont=dict(size=10),
    )
))

# Add the scatter trace for black circles representing CO2 per capita
fig.add_trace(go.Scattergeo(
    locations=df['country_code'],
    marker=dict(
        size=(100 - df['basic_water'])*0.3,
        sizemode='diameter',
        color='#800000',
        opacity=0.5
    ),
    hovertext=[f'{country}<br>CO2 per inwoner: {CO2_per_capita:.2f}<br>Basic Water: {basic_water:.2f}' for country, CO2_per_capita, basic_water in zip(df['country'], df['CO2_per_capita'], df['basic_water'])],
    showlegend=True,
    name='Geen toegang tot schoon drinkwater (%)',  # Add a title to the legend
))

# Set the layout and title
fig.update_layout(
    title='CO2 uitstoot en toegang tot schoon drinkwater (wereld)',
    width=780,
    geo=dict(
        showframe=False,
        showcoastlines=True,
        projection_type='natural earth'
    ),
    legend=dict(
        tracegroupgap=10,  # Increase the gap between legend groups
        x=0,  # Set the x-coordinate of the legend
        y=-0.1,  # Set the y-coordinate of the legend
        itemsizing = 'constant'
    )
)

# Show the plot
fig.show()

Figuur 1. CO2 uitstoot en toegang tot schoon drinkwater (wereld)#

In deze grafiek zie je een wereldkaart met meerdere variabelen. De kleur laat zien hoeveel CO2 per inwoner een land uitstoot en de grootte van de bubbels laat het percentage van inwoners zien dat geen toegang heeft tot schoon drinkwater. Als je hovert over een land, zie je ook de waardes die bij het land horen.

In deze kaart zien we dat over het algemeen landen die weinig CO2 uitstoten, minder toegang hebben tot drinkwater. Schoon drinkwater vinden wij een belangrijke metriek voor gezondheid en dit ondersteunt daarom het perspectief.

Hide code cell source
# Calculate correlation matrix
correlation_matrix = df[['CO2_per_capita','basic_water','hepatitis', 'polio','measles', 'diphtheria','GDP_per_capita']].corr(method='pearson')

fig = go.Figure(data=go.Bar(
    x=correlation_matrix.columns[correlation_matrix.columns != 'CO2_per_capita'],
    y=correlation_matrix['CO2_per_capita'][correlation_matrix.columns != 'CO2_per_capita'],  
    marker_color='teal'
))

# Customize the chart layout
fig.update_layout(
    title='Pearson’s r correlaties met CO2 per inwoner (wereld)',
    xaxis_tickangle=-45,
    width=780,
    yaxis=dict(
        title="Pearson's r",
        zeroline=False,
        gridcolor='lightgray',
        range=[0, 1],
    ),
    plot_bgcolor='white',
)
bin_labels = ['Toegang tot schoon drinkwater', 'Hepatitis', 'Polio', 'Mazelen', 'Diphtheria', 'GDP per inwoner']
fig.update_layout(xaxis=dict(tickmode='array', tickvals=[0, 1, 2, 3, 4, 5], ticktext=bin_labels))


# Show the chart
fig.show(renderer=pio.renderers.default)

Figuur 2. Pearson’s r correlaties met CO2 per inwoner (wereld)#

In deze grafiek zie je de correlaties tussen CO2 per inwoner, toegang tot schoon drinkwater, het percentage inwoners dat verschillende vaccins heeft ontvangen en het GDP per inwoner op wereldwijde schaal.

In deze grafiek zien we dat landen met een hogere CO2 per inwoner meer toegang tot schoon drinkwater hebben, ook hebben deze landen meer gevaccineerde mensen. Dit vinden wij belangrijke metrieken voor gezondheid. We hebben er ook voor gekozen om de correlatie met GDP te berekenen. Dit gebruiken we als verklaring voor waarom deze landen meer toegang hebben tot deze hulpmiddelen en het helpt met het onderbouwen van ons perspectief.

Hide code cell source
data = df[['CO2_per_capita', 'life_expect','adult_mortality','infant_mort']]

column_ranges = [(data[column].min(), data[column].max()) for column in data.columns]

skew = 1.85
colors = px.colors.sequential.Mint
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]

fig = go.Figure(data=go.Parcoords(
    line=dict(color=df['CO2_per_capita'], colorscale=colorscale, showscale=True),
    dimensions=list([
        dict(label='Levensverwachting (Leeftijd)', values=df['life_expect'], range=column_ranges[1]),
        dict(label='CO2 per inwoner (Ton)', values=df['CO2_per_capita'], range=column_ranges[0]),
        dict(label='volwassen sterfte (% Doden tussen 15-60)', values=df['adult_mortality'], range=column_ranges[2]),
        dict(label='Kindersterfte (Sterftecijfer)', values=df['infant_mort'], range=column_ranges[3])
    ])
))

fig.update_layout(
    title='Gezondheid vergeleken met CO2-uitstoot (wereld)',
    width=780,
)

fig.show()

Figuur 3. Gezondheid vergeleken met CO2-uitstoot (wereld)#

In deze grafiek zie je de levensverwachting, volwassen sterfte, babysterfte en de CO2-uitstoot per inwoner in een parallel coordinates plot. Hierin kan je van elk van deze variabelen zien hoe ze met elkaar gelinkt zijn. De kleur in de grafiek staat voor de CO2 per inwoner, waarbij donkere lijnen meer CO2 betekenen. Elk lijn staat voor een land. Uit de grafiek zie je dat landen met een hoge CO2-uitstoot een hogere levensverwachting hebben en een lagere sterfte. Hogere levensverwachting is een belangrijk metriek voor gezondheid dus voegt veel toe aan ons perspectief.

Perspectief 2#

Ons tweede perspectief is dat mensen in Europese landen, die een groter deel van hun elektriciteit hernieuwbaar opwekken, gezonder zijn. Hier hebben we wederom verschillende metrieken gebruikt voor het bepalen van de gezondheid van de inwoners.

In ‘Hernieuwbaar elektriciteit en toegang tot schoon drinkwater (Europa)’ zien we dat over het algemeen landen met een hoger percentage hernieuwbaar opgewekte energie, meer toegang hebben tot schoon drinkwater. Schoon water is essentieel om te kunnen overleven en vinden wij heel belangrijk voor gezondheid. Uit deze grafiek blijkt dus dat landen die meer elektriciteit hernieuwbaar opwekken gezonder zijn, omdat ze meer toegang tot schoon drinkwater hebben.

In ‘Hernieuwbare energie en levensverwachting (Europa)’ zien we dat over het algemeen landen met een hoger percentage hernieuwbaar opgewekte energie, een hogere levensverwachting hebben. Hoe ouder mensen worden, hoe gezonder ze zijn, dus levensverwachting is een goede manier om gezondheid te meten. Uit deze grafiek blijkt dus dat landen die meer elektriciteit hernieuwbaar opwekken gezonder zijn, omdat ze een hogere levensverwachting hebben.

In ‘Pearson’s r correlaties hernieuwbare en niet hernieuwbare elektriciteit (Europa)’ zien we de positieve correlatie tussen hernieuwbare elektriciteit en levensverwachting en schoon drinkwater die in de eerdere grafieken te zien waren. Hier zien we nu ook dat hernieuwbare elektriciteit een positieve correlatie heeft met het percentage van jongeren (5-19) met een gezond gewicht. Dit betekent dat die jongeren waarschijnlijk een gezonder eet- en bewegingspatroon hebben, wat betekent dat er een betere gezondheid is.

Hide code cell source
# Filter the 'df_c' DataFrame for rows with 'region' value as 'Europe'
df_continent= df[df['region'] == 'Europe']

# Filter the 'df_l' DataFrame for rows with country codes present in 'df_c_europe'
df_continent = df[df['country_code'].isin(df_continent['country_code'])]

fig = px.scatter(
    df_continent,
    x=df_continent['renewable'],
    y=df_continent['basic_water'],
    trendline='ols',
    trendline_color_override="red",
    size=abs(np.log10(df_continent['total_electricity']*10)),
    hover_data={
        'Hernieuwbare elektriciteit': df_continent['renewable'],
        'Toegang tot schoon water': df_continent['basic_water'],
        'Country': df_continent['country']
    },
)

# Define custom hovertemplate
hover_template = '<b>Country</b>: %{customdata[2]}<br>' \
                 '<b>Hernieuwbare elektriciteit</b>: %{customdata[0]:.2f}<br>' \
                 '<b>Toegang tot schoon water</b>: %{customdata[1]:.2f}<br>' \
                 '<extra></extra>'

# Update hovertemplate for the scatter trace
fig.update_traces(hovertemplate=hover_template)


# Add a legend entry
legend_trace = go.Scatter(
    x=[None],
    y=[None],
    mode='markers',
    marker=dict(
        size=10,
        sizemode='diameter',
        color='blue'
    ),
    name='Totale gegenereerde elektriciteit (TWh)',        
    showlegend=True
)



fig.add_trace(legend_trace)

# Customize the chart layout
fig.update_layout(
    title='Hernieuwbaar elektriciteit en toegang tot schoon drinkwater (Europa)',
    xaxis_title='Hernieuwbare elektriciteit (%)',
    yaxis_title='Toegang tot schoon drinkwater (%)',
    width=780,
    legend=dict(
        itemsizing='constant',  # Make the legend items static
        itemclick=False, # Disable interactivity of the legend item
        tracegroupgap=10,  # Increase the gap between legend groups
        x=0,  # Set the x-coordinate of the legend
        y=-0.2,  # Set the y-coordinate of the legend
    ),
)

# Show the chart
fig.show()

Figuur 4. Hernieuwbaar elektriciteit en toegang tot schoon drinkwater (Europa)#

In deze grafiek zie je toegang tot schoon drinkwater tegenover het percentage elektriciteit dat duurzaam opgewekt is in alle landen van Europa. Elk punt is een land en je kan over een punt hoveren om informatie te krijgen over het land. De grootte van de punt geeft aan hoeveel elektriciteit een land opwekt. Deze grootte is op logaritmische schaal.

De trendlijn gaat omhoog en dat betekent dat er een positieve correlatie zit tussen duurzaam opgewekte elektriciteit en toegang tot schoon drinkwater. Toegang tot schoon drinkwater zegt veel over de levenskwaliteit in een land en voegt dus veel toe aan ons perspectief.

Hide code cell source
# Create the cartogram using Plotly Graph Objects
fig = go.Figure()

skew = 1
colors = px.colors.sequential.Greens
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]

# Add the choropleth trace for colored countries
fig.add_trace(go.Choropleth(
    locations=df_continent['country_code'],
    z=df_continent['renewable'],
    geo='geo',
    colorscale=colorscale,
    hovertext=[f'{country}<br>Renewable: {renewable:.2f}<br>Life Expectancy: {life_expect:.2f}' for country, renewable, life_expect in zip(df_continent['country'], df_continent['renewable'], df_continent['life_expect'])],
    colorbar=dict(
        title='Hernieuwbare elektriciteit (%)',  # Add a title to the color scale
        titleside='top',
        tickfont=dict(size=10),
    )
))

# Add the scatter trace for black circles representing CO2 per capita
fig.add_trace(go.Scattergeo(
    locations=df_continent['country_code'],
    marker=dict(
        size=(df_continent['life_expect']-65)*0.8,
        sizemode='diameter',
        color='#2e86d1',
        opacity=0.5
    ),
    hovertext=[f'{country}<br>Renewable: {renewable:.2f}<br>Life Expectancy: {life_expect:.2f}' for country, renewable, life_expect in zip(df_continent['country'], df_continent['renewable'], df_continent['life_expect'])],
    showlegend=True,
    name='Levensverwachting ',  # Add a title to the legend
))

# Set the layout and title
fig.update_layout(
    title='Hernieuwbare elektriciteit en levensverwachting (Europa)',
    width=780,
    geo=dict(
        showframe=False,
        showcoastlines=False,
        projection_type='natural earth',
        scope="europe",
    ),
    legend=dict(
        tracegroupgap=10,  # Increase the gap between legend groups
        x=0,  # Set the x-coordinate of the legend
        y=-0.1,  # Set the y-coordinate of the legend
    )
    
)

# Show the plot
fig.show()

Figuur 5. Hernieuwbare elektriciteit en levensverwachting (Europa)#

In deze grafiek zie je een bubble map van Europa. De kleur laat zien hoeveel hernieuwbare elektriciteit er wordt opgewekt als percentage van de totale opgewekte elektriciteit per land en de grootte van de bubbels laat de levensverwachting zien. Als je hovert over een land, zie je ook de waardes die bij het land horen.

In deze kaart zien we dat over het algemeen landen die een hoger percentage hernieuwbare elektriciteit opwekken een hogere levensverwachting hebben. Dit ondersteunt ons perspectief, omdat een hoge levensverwachting betekent dat de inwoners gezond zijn.

Hide code cell source
# Calculate correlation matrix
corr_df = df_continent[['renewable', 'no_renewable','life_expect', 'age5-19thinness','age5-19obesity', 'age5-19healthyweight', 'GDP_per_capita']].corr(method='pearson')
corr_df = corr_df.drop(corr_df.columns[[0,1]], axis=1)
# Create a correlation map using Plotly Express
fig = go.Figure(data=go.Heatmap(
    z=corr_df.values,
    x=['levensverwachting', 'age 5-19 thinness','age 5-19 obesity', 'age 5-19 healthy weight', 'GDP per inwoner'],
    y=['Hernieuwbaar', 'niet hernieuwbaar'],
    colorscale='rdylgn',
    zmin=-1,
    zmax=1,
    colorbar=dict(
        title="Pearson's r",
        titleside='top',
        tickfont=dict(size=10),
    )
))

# Customize the chart layout
fig.update_layout(
    title='Pearson’s r correlaties hernieuwbare en niet hernieuwbare elektriciteit (Europa)',
    width=780,
    height=450,
    xaxis_showgrid=True,
    yaxis_showgrid=True,
    xaxis_tickangle=-45
)

# Show the chart
fig.show(renderer=pio.renderers.default)

Figuur 6. Pearson’s r correlaties hernieuwbare en niet hernieuwbare elektriciteit (Europa)#

In deze grafiek zie je een correlatiematrix van hernieuwbare en niet hernieuwbare elektriciteit met variabelen die wij belangrijk vinden voor gezondheid. ‘Thinness’ is het percentage van jongeren tussen de 5 en 19 jaar dat ondergewicht heeft, ‘obesity’ is het percentage dat overgewicht heeft en ‘healthy weight’ is het percentage dat een gezond gewicht heeft.

In deze matrix kunnen we zien dat hernieuwbare elektriciteit een positieve correlatie heeft met levensverwachting en toegang. Ook zijn er minder mensen met ondergewicht en minder mensen met overgewicht en dus meer mensen op een gezond gewicht. We hebben ook GDP per inwoner in de grafiek gezet dat we kunnen gebruiken als verklaring in ons perspectief.